package com.liliudong.rommath.biz.sys.service;


import com.liliudong.rommath.biz.sys.entity.SysRoleMenu;
import com.liliudong.rommath.common.consts.RommathConst;
import com.mybatisflex.core.query.QueryChain;
import com.mybatisflex.core.service.IService;

import java.util.Collection;
import java.util.List;

import static com.liliudong.rommath.biz.sys.entity.table.SysRoleMenuTableDef.SYS_ROLE_MENU;

/**
 * 角色菜单关联表 服务层。
 *
 * @author liudong.li
 * @since 1.0.0
 */
public interface SysRoleMenuService extends IService<SysRoleMenu> {

    default QueryChain<SysRoleMenu> queryChainIgnoreDataPermission() {
        return queryChain()
                .from(SYS_ROLE_MENU.as(RommathConst.IGNORE_TABLE_ALIAS));
    }

    /**
     * 按角色id删除
     *
     * @param roleId 角色id
     */
    void removeByRoleId(Long roleId);

    /**
     * 按角色id保存批处理
     *
     * @param sysRoleId  系统角色id
     * @param menuIdList 菜单id列表
     */
    void saveBatchByRoleId(Long sysRoleId, Collection<Long> menuIdList);

    /**
     * 获取父菜单id列表
     *
     * @param menuIdList 菜单id列表
     * @return {@link List }<{@link Long }>
     */
    List<Long> getParentMenuIdList(List<Long> menuIdList);
}